function setupWebViewJavascriptBridge(callback) {
    if (window.WebViewJavascriptBridge) { 
      return callback(WebViewJavascriptBridge); 
    } else {
      document.addEventListener(
               'WebViewJavascriptBridgeReady'
               , function() {
                  return callback(WebViewJavascriptBridge)
               }
           );
    }
    if (window.WVJBCallbacks) { return window.WVJBCallbacks.push(callback); }
    window.WVJBCallbacks = [callback]; // 创建一个 WVJBCallbacks 全局属性数组，并将 callback 插入到数组中。
    var WVJBIframe = document.createElement('iframe'); // 创建一个 iframe 元素
    WVJBIframe.style.display = 'none'; // 不显示
    WVJBIframe.src = 'wvjbscheme://__BRIDGE_LOADED__'; // 设置 iframe 的 src 属性
    document.documentElement.appendChild(WVJBIframe); // 把 iframe 添加到当前文导航上。
    setTimeout(function() { document.documentElement.removeChild(WVJBIframe) }, 0)
}
function getUserAgent () {
    var u = navigator.userAgent;
    if (!!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)) {
        return 1 //ios终端
    } else if (u.indexOf('Android') > -1 || u.indexOf('Adr') > -1) {
        return 0 //android终端
    } else {
        return 2
    }
}

//注册回调函数，第一次连接时调用 初始化函数(android需要初始化,ios不用)
setupWebViewJavascriptBridge(function (bridge) {
    if (getUserAgent() === 0) {
      //初始化
      bridge.init(function (message, responseCallback) {
        var data = {
          'Javascript Responds': 'Wee!'
        };
        responseCallback(data);
      })
    }
});

// 这里主要是oc与js通信相关代码
// setupWebViewJavascriptBridge(function(bridge){
//     //初始化 必须有 Android 通过 JSBridge 调用 默认JS bridge.init bridgeWebView.send调用
//     if (getUserAgent() === 0) {
//         bridge.init(function(message, responseCallback) {
//             var data = {
//                 'Javascript Responds': 'Android调用JS初始化方法!'
//             };
//             responseCallback(data);
//         });
//     }
//     bridge.callHandler('passUserinfoHandle', "", function(responseData) {
//         let userInfo = JSON.parse(responseData)
//         storage.set('userInfoFromApp', userInfo)
//         let data = {
//             adno: Number(GetPar('adno'))
//         }
//         getAdList(data, userInfo.accessToken)
//     })
// });


export default {
    callhandler (name, data, callback) {
        setupWebViewJavascriptBridge(function (bridge) {
            bridge.callHandler(name, data, callback)
        })
    },
    registerhandler (name, callback) {
        setupWebViewJavascriptBridge(function (bridge) {
            bridge.registerHandler(name, function (data, responseCallback) {
                callback(data, responseCallback)
            })
        })
    }
}
